package com.cloud.feign.service;

import com.joyoung.common.controller.PageInfoRes;
import com.joyoung.common.controller.RestRes;
import com.cloud.feign.resp.GoodsDetailVo;
import com.cloud.feign.resp.GoodsTmsVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;

//@FeignClient(value = "cloud-product",url = "localhost:8780")
@FeignClient(value = "cloud-product")
public interface CloudProductFeign {
    /**
     * 通过产品码查询商品基本信息（可分页）
     *
     * @param startTime 起始时间(包含)
     * @param endTime   结束时间(不包含)
     * @param mode      模式(是否查询已删除的数据),0:查询模式(过滤已删除的数据),1:同步模式(不过滤已删除的数据),默认为0
     * @param isPutaway 上架状态: 0:下架 1:上架 2:待上架
     * @param page      页码
     * @param size      分页大小
     * @param model     物料型号(模糊匹配)
     * @param code      物料编码
     * @param type      物料类型(1：成品 2：配件 3：POP 4：辅料 5:原料 9.虚拟件),查询多个类型时以`,`区分,如 `1,2,3`
     * @return GoodsTmsVo
     */
    @GetMapping("/api/goods/v1/page")
    RestRes<PageInfoRes<GoodsTmsVo>> getPage(@RequestParam("startTime") String startTime,
                                             @RequestParam("endTime") String endTime,
                                             @RequestParam("mode") Integer mode,
                                             @RequestParam("isPutaway") Integer isPutaway,
                                             @RequestParam("page") Integer page,
                                             @RequestParam("size") Integer size,
                                             @RequestParam("model") String model,
                                             @RequestParam("code") String code,
                                             @RequestParam("type") String type);

    /**
     * 通过物料编码查询商品详情
     *
     * @param code 物料编码
     * @return GoodsDetailVo
     */
    @GetMapping("/goodsDetail/{code}")
    RestRes<GoodsDetailVo> getDetails(@PathVariable("code") String code);
}
